Writing software is hard. Writing good software is even harder. It requires focus, discipline and a great deal of perseverance. But with the right mindset, the process becomes a whole lot more manageable. If you've been writing code for some time, you know that almost all of the technical difficulties you have faced weren't the technical concepts, but the challenge of maintaining the right mindset.